import fs from "fs";
import path from "path";
import dotenv from "dotenv";

export function useModeEnv(mode, env) {
    // 判断环境类型
    const isDev = mode === "dev";
    const isProd = mode === "prod";
    const isTest = mode === "test";

    // 获取项目根路径
    const getRootPath = (...dir) => {
        return path.resolve(process.cwd(), ...dir);
    };

    // 获取环境变量配置 - 只获取当前 mode 的环境变量文件
    const getEnvConfig = () => {
        // 只加载当前 mode 的环境变量文件
        const envFile = `.env.${mode}`;
        const envConfig = {};

        // 读取当前 mode 的环境变量文件
        const envFilePath = getRootPath(envFile);
        if (fs.existsSync(envFilePath)) {
            const result = dotenv.parse(fs.readFileSync(envFilePath));
            Object.assign(envConfig, result);
        }

        // 使用传入的环境变量
        Object.assign(envConfig, env);

        return envConfig;
    };

    return {
        isDev,
        isProd,
        isTest,
        getRootPath,
        getEnvConfig,
    };
}
